home *** CD-ROM | disk | FTP | other *** search
- ; FFT
- ;
- ; SYMBOLIC NAMES FOR DATA MEMORY LOCATIONS
- ;
- XLEND: equ 0
- ONE: equ 1
- NT: equ 2
- NH: equ 3
- NQ: equ 4
- M: equ 5
- IT: equ 6
- ID: equ 7
- IR: equ 8
- IU: equ 9
- I: equ 10
- J: equ 11
- ND: equ 12
- L: equ 13
- XRQ: equ 14
- XIQ: equ 15
- XRP: equ 16
- XIP: equ 17
- COS: equ 18
- SIN: equ 19
- TEMP1: equ 20
- TEMP2: equ 21
- TEMP3: equ 22
- TEMP4: equ 23
- K: equ 24
- TABPTR: equ 25
- ALOCPTR:equ 26
- DIFF: equ 27
- STACKED:equ 28
- DIFFS1: equ 29
- DIFFS2: equ 30
- ;
- ORG 0
- LACK 73 ; 73
- SACL ONE,0
- OUT ONE,7 ; tell 8088 we're starting
- B RESET1 ;RESET VECTOR
- ;
- ;
- ; VECTORS
- ;
- ; POINTERS
- ;
- XLEN: DW 512 ;ADDR OF FFT SIZE
-
- TABLE: ; SINE TABLE
- DW 0000H
- DW 0192H
- DW 0324H
- DW 04B6H
- DW 0647H
- DW 07D9H
- DW 096AH
- DW 0AFBH
- DW 0C8BH
- DW 0E1BH
- DW 0FABH
- DW 1139H
- DW 12C8H
- DW 1455H
- DW 15E2H
- DW 176DH
- DW 18F8H
- DW 1A82H
- DW 1C0BH
- DW 1D93H
- DW 1F19H
- DW 209FH
- DW 2223H
- DW 23A6H
- DW 2528H
- DW 26A8H
- DW 2826H
- DW 29A3H
- DW 2B1FH
- DW 2C98H
- DW 2E11H
- DW 2F87H
- DW 30FBH
- DW 326EH
- DW 33DEH
- DW 354DH
- DW 36BAH
- DW 3824H
- DW 398CH
- DW 3AF2H
- DW 3C56H
- DW 3DB8H
- DW 3F17H
- DW 4073H
- DW 41CEH
- DW 4325H
- DW 447AH
- DW 45CDH
- DW 471CH
- DW 4869H
- DW 49B4H
- DW 4AFBH
- DW 4C3FH
- DW 4DB1H
- DW 4EBFH
- DW 4FFBH
- DW 5133H
- DW 5269H
- DW 539BH
- DW 54CAH
- DW 55F5H
- DW 571DH
- DW 5842H
- DW 5964H
- DW 5A82H
- DW 5B9DH
- DW 5C84H
- DW 5DC7H
- DW 5ED7H
- DW 5FE3H
- DW 60ECH
- DW 61F0H
- DW 62F1H
- DW 63EFH
- DW 64E8H
- DW 65DDH
- DW 66CFH
- DW 67BDH
- DW 68A6H
- DW 698CH
- DW 6A6DH
- DW 6B4AH
- DW 6C24H
- DW 6CF9H
- DW 6DCAH
- DW 6E96H
- DW 6F5EH
- DW 7023H
- DW 70E2H
- DW 719EH
- DW 7255H
- DW 7307H
- DW 73B5H
- DW 745FH
- DW 7504H
- DW 75A5H
- DW 7641H
- DW 76D9H
- DW 776CH
- DW 77FAH
- DW 7884H
- DW 7909H
- DW 798AH
- DW 7A05H
- DW 7A7DH
- DW 7AEFH
- DW 7B5DH
- DW 7BC5H
- DW 7C29H
- DW 7C89H
- DW 7CE3H
- DW 7D39H
- DW 7D8AH
- DW 7DD6H
- DW 7E1DH
- DW 7E5FH
- DW 7E9DH
- DW 7ED5H
- DW 7F09H
- DW 7F38H
- DW 7F62H
- DW 7F87H
- DW 7FA7H
- DW 7FC2H
- DW 7FD8H
- DW 7FE9H
- DW 7FF6H
- DW 7FFDH
- DW 7FFFH
- ;
- ; PROGRAM
- ;
- RESET1:
- ;Setup FFT
- ldpk 0
- lack xlend
- sacl xlend,0
- lack ONE
- sacl ONE,0
- lt one
- mpyk 0400H
- pac
- sacl diff,0
- mpyk 0BFFH
- pac
- sacl diffs2
- mpyk 600H
- pac
- sacl diffs1
- lack XLEN
- tblr nt
- lar ar0,nt
- larp 0
- mar *-,0
- lt 1H
- zac
- mpyk 0200H
- pac
- WAIT: larp 0
- BIOZ STORE
- B WAIT
- STORE: IN XRQ,PA3
- push
- LAC XRQ,4
- SUB ONE,15
- SACL XRQ,0
- pop
- tblw XRQ
- add diff,0
- tblw XLEND
- sub diff
- add ONE,0
- banz wait
- B FFT
- ;
- ORG 200H
- ALOC: ; REAL PART
- ;
- ORG 600H
- BLOC: ; IMAGINARY
- ORG 0A00H
- ; Data stored do fft
-
- FFT: LACK 1
- SACL ONE,0
- LT ONE
- MPYK XLEN
- PAC
- TBLR XLEND
- LAC XLEND,0
- SUB ONE,0
- SACL NT,0
- LAC XLEND,15
- SACH NH,0
- LAC XLEND,14
- SACH NQ,0
- ;
- ; POINTER INITIALIZATION
- LT ONE
- MPYK TABLE
- PAC
- SACL TABPTR,0 ; TABLE PTR
- MPYK ALOC
- PAC
- SACL ALOCPTR,0 ; REALS PTR
- MPYK BLOC
- PAC
- SUB ALOCPTR,0
- SACL DIFF,0 ; BLOC - ALOC
- ;
- ; BITREV
- ;
- ZAC
- SACL I,0
- SACL J,0
- LAB0: ZALS NT
- SUB ONE,1
- SUB I,0
- BLZ LAB03
- ZALS J
- SUB I,0
- BLEZ LAB01
- LAC ALOCPTR,0
- ADD J,0
- TBLR TEMP1
- ADD DIFF,0
- TBLR TEMP3
- LAC ALOCPTR,0
- ADD I,0
- TBLR TEMP2
- ADD DIFF,0
- TBLR TEMP4
- LAC ALOCPTR,0
- ADD J,0
- TBLW TEMP2
- ADD DIFF,0
- TBLW TEMP4
- LAC ALOCPTR,0
- ADD I,0
- TBLW TEMP1
- ADD DIFF,0
- TBLW TEMP3
- LAB01: LAC NH,0
- SACL K,0
- LAB02: LAC J,0
- SUB K,0
- BLZ LAB025
- SACL J,0
- LAC K,15
- SACH K,0
- B LAB02
- LAB025: LAC J,0
- ADD K,0
- SACL J,0
- ZALS I
- ADD ONE,0
- SACL I,0
- B LAB0
- LAB03:
- ;
- ;
- ZAC
- SACL M,0
- SACL IT,0
- LACK 1
- SACL ID,0
- SACL IR,0
-
- LAC NQ,1
- SACL IU,0
-
- BEGIN:
- LAC ID,0
- SACL I,0
- ADD ID,0
- SACL ID,0
- ZAC
- SACL J,0
-
- LAB1:
- LAC I,0
- SUB J,0
- BLEZ LAB5
- LAC TABPTR,0
- ADD M,0
- TBLR SIN
- LAC TABPTR,0
- ADD NQ,0
- SUB M,0
- TBLR COS
- LAC J,0
- SUB IR,0
- BLZ LAB2
- LAC M,0
- SUB IT,0
- SACL M,0
- ZAC
- SUB COS,0
- SACL COS,0
- B LAB3
-
- LAB2:
- LAC M,0
- ADD IT,0
- SACL M,0
-
- LAB3:
- LAC J,0
- SACL ND,0
-
- LAB4:
- LAC NT,0
- SUB ND,0
- BLZ LAB45
- LAC I,0
- ADD ND,0
- SACL L,0
- LAC ALOCPTR,0
- ADD L,0
- TBLR XRQ
- ADD DIFF,0
- TBLR XIQ
- LAC ALOCPTR,0
- ADD ND,0
- TBLR XRP
- ADD DIFF,0
- TBLR XIP
- ;
- ; BUTTERFLY
- ;
- ZAC
- LT COS
- MPY XRQ
- LTA SIN
- MPY XIQ
- LTA COS
- SACH TEMP1,0
- ZAC
- MPY XIQ
- LTA SIN
- MPY XRQ
- SPAC
- SACH TEMP2,0
- ;
- LAC XRP,14
- ADD TEMP1,15
- SACH XRP,1
- SUBH TEMP1
- SACH XRQ,1
-
- LAC XIP,14
- ADD TEMP2,15
- SACH XIP,1
- SUBH TEMP2
- SACH XIQ,1
- ;
- ; END OF BUTTERFLY
- ;
- LAC ALOCPTR,0
- ADD L,0
- TBLW XRQ
- ADD DIFF,0
- TBLW XIQ
- LAC ALOCPTR,0
- ADD ND,0
- TBLW XRP
- ADD DIFF,0
- TBLW XIP
-
- LAC ND,0
- ADD ID,0
- SACL ND,0
- B LAB4
-
- LAB45:
- LAC J,0
- ADD ONE,0
- SACL J,0
- B LAB1
-
- LAB5:
- LAC I,0
- SACL IR,0
- LAC IU,15
- SACH IU,0
- SACH IT,0
- LAB6:
- LAC NH,0
- SUB I,0
- BGZ BEGIN
- SPECT: larp 0
- ; lac xlend,15
- ; sach xlend
- lar 0,xlend
- mar *-,0
- lac alocptr,0
- PICK1: tblr TEMP1
- add DIFF,0
- tblr temp2
- push
- zac
- lt temp1
- mpy temp1
- lta temp2
- mpy temp2
- apac
- sach temp1
- sacl temp2
- pop
- add diffs1
- tblw temp1
- add one,9
- tblw temp2
- sub diffs2
- banz pick1
- STOP: LACK 58H ; 88
- SACL ONE,0
- OUT ONE,7 ; tell 8088 we're done
- LOOP: B LOOP
-
-